// 定义上传文件的接口，增强代码可读性
interface UploadFile {
  url: string;
  name?: string;
  isImage?: boolean;
  deletable?: boolean;
}

Page({
  data: {
    feedbackContent: '',
    fileList: [] as UploadFile[],
  },

  /**
   * 图片读取后处理
   */
  afterRead(event: WechatMiniprogram.CustomEvent) {
    const { file } = event.detail;
    const { fileList = [] } = this.data;

    // 可以加入上传状态
    fileList.push({ ...file, url: file.url });
    this.setData({ fileList });
  },

  /**
   * 删除图片
   */
  deleteFile(event: WechatMiniprogram.CustomEvent) {
    const { index } = event.detail;
    const { fileList } = this.data;
    fileList.splice(index, 1);
    this.setData({ fileList });
  },

  /**
   * 提交反馈
   */
  async submitFeedback() {
    if (!this.data.feedbackContent.trim()) {
      wx.showToast({
        title: '反馈内容不能为空',
        icon: 'none',
      });
      return;
    }

    wx.showLoading({
      title: '提交中...',
      mask: true,
    });

    try {
      // 1. 如果有图片，先上传图片到服务器，获取URL
      // 这里用 setTimeout 模拟异步上传过程
      const imageUrls = await this.uploadImages();

      // 2. 构造提交给后端的数据
      const feedbackData = {
        content: this.data.feedbackContent,
        images: imageUrls,
        // 可以附带用户信息
        // openid: wx.getStorageSync('openid'),
      };

      // 3. 模拟调用后端API
      console.log('正在提交反馈数据:', feedbackData);
      await new Promise(resolve => setTimeout(resolve, 1500)); // 模拟网络请求

      wx.hideLoading();

      wx.showToast({
        title: '提交成功！',
        icon: 'none',
      });

      // 提交成功后清空表单并返回上一页或跳转到历史页
      this.setData({
        feedbackContent: '',
        fileList: [],
      });
      wx.navigateTo({
        url: '../feedhistory/index',
      });
    } catch (error) {
      wx.hideLoading();
      wx.showToast({
        title: '提交失败，请重试',
        icon: 'none',
      });
      console.error('反馈提交失败', error);
    }
  },

  /**
   * 模拟上传图片数组
   * 真实场景中，你需要使用 wx.uploadFile 逐个上传
   */
  uploadImages(): Promise<string[]> {
    return new Promise((resolve) => {
      // 假设所有图片都已成功上传，并返回模拟的服务器URL
      const uploadedUrls = this.data.fileList.map(
        (file, index) => `https://mock.server.com/images/feedback_${Date.now()}_${index}.jpg`
      );
      // 模拟上传耗时
      setTimeout(() => {
        console.log('模拟图片上传成功:', uploadedUrls);
        resolve(uploadedUrls);
      }, 500);
    });
  },

  /**
   * 跳转到反馈历史页面
   */
  navigateToHistory() {
    wx.navigateTo({
      url: '../feedhistory/index',
    });
  },
});

